package main

import (
	"fmt"
)

/**
执行用时：0 ms, 在所有 Go 提交中击败了100.00%的用户
内存消耗：3.4 MB, 在所有 Go 提交中击败了43.33%的用户
 */
func longestValidParentheses(s string) int {

	stk := make([]int, 0)
	res := 0
	for i, start := 0, -1; i < len(s); i++ {
		if s[i] == '(' {
			stk = append(stk, i)
		} else {
			if len(stk) != 0 {
				stk = stk[:len(stk) - 1]
				if len(stk) != 0 {
					res = max(res, i - stk[len(stk) - 1])
				} else {
					res = max(res, i - start)
				}
			} else {
				start = i
			}
		}
	}
	return res
}

// 求最大值
func max(a int, b int) int {
	if a > b {
		return a
	} else {
		return b
	}
}

func main() {

	fmt.Println(longestValidParentheses(")()())"))  // 4
}
